1. Field of Invention
The present disclosure relates generally to input/output (I/O) processing, and in particular, to providing indirect data addressing for a control block at a channel subsystem of an I/O processing system.
2. Description of Background
Input/output (I/O) operations are used to transfer data between memory and I/O devices of an I/O processing system. Specifically, data is written from memory to one or more I/O devices, and data is read from one or more I/O devices to memory by executing I/O operations.
To facilitate processing of I/O operations, an I/O subsystem of the I/O processing system is employed. The I/O subsystem is coupled to main memory and the I/O devices of the I/O processing system and directs the flow of information between memory and the I/O devices. One example of an I/O subsystem is a channel subsystem. The channel subsystem uses channel paths as communications media. Each channel path includes a channel coupled to a control unit, the control unit being further coupled to one or more I/O devices.
The channel subsystem may employ channel command words (CCWs) to transfer data between the I/O devices and memory. A CCW specifies the I/O command to be executed. For commands initiating certain I/O operations, the CCW designates the memory area associated with the operation, the action to be taken whenever a transfer to or from the area is completed, and other options.
During I/O processing, a list of CCWs is fetched from memory by a channel. The channel parses each command from the list of CCWs and forwards a number of the commands, each command in its own entity, to a control unit coupled to the channel. The control unit then processes the commands. The channel tracks the state of each command and controls when the next set of commands are to be sent to the control unit for processing. The channel ensures that each command is sent to the control unit in its own entity. Further, the channel infers certain information associated with processing the response from the control unit for each command.
Performing I/O processing on a per CCW basis may involve a large amount of processing overhead for the channel subsystem, as the channels parse CCWs, track state information, and react to responses from the control units. Therefore, it may be beneficial to shift much of the processing burden associated with interpreting and managing CCW and state information from the channel subsystem to the control units. Simplifying the role of channels in communicating between the control units and an operating system in the I/O processing system may increase communication throughput as less handshaking is performed. Simplifying the role of channels in communication may include grouping multiple commands into a single I/O operation. Altering command sequences by grouping two or more commands together in a single I/O operation results in a larger data area required for storing the commands and a data area whose length varies depending on the size and number of commands that are grouped within the single I/O operation.
Currently, a single I/O operation can support a single fixed sized command data area that is referenced by a single direct address. This limits the number of commands that can be grouped together in a single I/O operation and thus, limits the increase in throughput that can be gained by grouping commands. In addition, this limits the way that the commands are stored to a contiguous storage area. Performance may be improved by having the commands spread out in a variety of locations. Accordingly, there is a need in the art to be able to store a plurality of commands making up a single I/O operation in non-contiguous storage and for the amount of storage required to be able to vary between different I/O operations.